﻿using System;
using FBGraph.Controllers;
using FBGraph.Models;

namespace FBGraph
{
    public partial class FBGraphContext
    {
        partial void InitControllers()
        {
            this.Albums = new AlbumsController(this);
            this.Comments = new CommentsController(this);
            this.Events = new EventsController(this);
            this.Feed = new FeedController(this);
            this.Groups = new GroupsController(this);
            this.Links = new LinksController(this);
            this.Notes = new NotesController(this);
            this.Pages = new PagesController(this);
            this.Posts = new PostsController(this);
            this.Photos = new PhotosController(this);
            this.Statuses = new StatusesController(this);
            this.Tagged = new TaggedController(this);
            this.Users = new UsersController(this);
            this.Videos = new VideosController(this);
        }

        /// <summary>Gets a reference to a <see cref="AlbumsController" />, which provides access to <see cref="Album" /> objects and to the albums connection for applicable Graph API objects.</summary>
        public AlbumsController Albums { get; private set; }

        /// <summary>Gets a reference to a <see cref="CommentsController" />, which provides access to the comments connection for applicable Graph API objects.</summary>
        public CommentsController Comments { get; private set; }

        /// <summary>Gets a reference to a <see cref="EventsController" />, which provides access to <see cref="Event" /> objects, the events connection for applicable Graph API objects and other connections specific to <see cref="Event" /> objects.</summary>
        public EventsController Events { get; private set; }

        /// <summary>Gets a reference to a <see cref="FeedController" />, which provides access to the feed connection (the profile's wall) for application Graph API objects.</summary>
        public FeedController Feed { get; private set; }

        /// <summary>Gets a reference to a <see cref="GroupsController" />, which provides access to <see cref="Group" /> objects and to the groups connection for applicable Graph API objects.</summary>
        public GroupsController Groups { get; private set; }

        /// <summary>Gets a reference to a <see cref="LinksController" />, which provides access the links connection for applicable Graph API objects.</summary>
        public LinksController Links { get; private set; }

        /// <summary>Gets a reference to a <see cref="NotesController" />, which provides access to <see cref="Notes" /> objects and to the notes connection for applicable Graph API objects.</summary>
        public NotesController Notes { get; private set; }

        /// <summary>Gets a reference to a <see cref="PagesController" />, which provides access to <see cref="Page" /> objects and to the pages connection for applicable Graph API objects.</summary>
        public PagesController Pages { get; set; }

        /// <summary>Gets a reference to a <see cref="PhotosController" />, which provides access to <see cref="Photo" /> objects and to the photos connection for applicable Graph API objects.</summary>
        public PhotosController Photos { get; private set; }

        /// <summary>Gets a reference to a <see cref="PostsController" />, which provides access to <see cref="Post" /> objects and to the posts connection (the profile's own posts) for applicable Graph API objects.</summary>
        public PostsController Posts { get; private set; }

        /// <summary>Gets a reference to a <see cref="StatusesController" />, which provides access to <see cref="StatusMessage" /> objects and to the statuses connection for applicable Graph API objects.</summary>
        public StatusesController Statuses { get; private set; }

        /// <summary>Gets a reference to a <see cref="TaggedController" />, which provides access to the tagged connnection (tagged photos, videos and posts) for applicable Graph API objects</summary>
        public TaggedController Tagged { get; private set; }

        /// <summary>Gets a reference to a <see cref="UsersController" />, which provides access to <see cref="User" /> profiles and connections specific to user Graph API objects.</summary>
        public UsersController Users { get; private set; }

        /// <summary>Gets a reference to a <see cref="VideosController" />, which provides access to <see cref="Video" /> objects and the videos connection for applicable Graph API objects.</summary>
        public VideosController Videos { get; private set; }
    }
}